1. 나의 말:

  2. ChatGPT의 말:

    C++Builder의 VCL 컴포넌트를 기준으로 설명드리면, 크게 화면에 직접 보이는 컴포넌트와 보이지 않는 컴포넌트로 나눌 수 있습니다.

    1. 기본 화면 컴포넌트

    컴포넌트용도
    TLabel글자/설명 표시
    TEdit한 줄 문자열 입력
    TMemo여러 줄 문자열 입력
    TButton버튼
    TCheckBox체크/해제 선택
    TRadioButton여러 항목 중 하나 선택
    TGroupBox관련 컴포넌트를 묶는 영역
    TPanel화면 영역을 나누거나 컨테이너로 사용
    TScrollBox스크롤 가능한 영역
    TImage이미지 표시
    TShape사각형, 원 등의 도형 표시

    예를 들어:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        Label1->Caption = Edit1->Text;
    }
    

    Edit1에 입력한 내용을 Label1에 표시하는 코드입니다.

    2. 선택/목록 관련 컴포넌트

    컴포넌트용도
    TComboBox드롭다운 목록
    TListBox목록 표시
    TCheckListBox체크 가능한 목록
    TListView아이콘/상세 정보가 있는 목록
    TTreeView트리 구조 표시
    TStringGrid문자열 기반 표
    TDrawGrid직접 그리는 표
    TSpinEdit숫자를 증가/감소시키며 입력
    TTrackBar슬라이더

    예를 들어 ComboBox에 항목을 추가하려면:

    ComboBox1->Items->Add("서울");
    ComboBox1->Items->Add("부산");
    ComboBox1->Items->Add("대구");
    

    3. 날짜/시간 관련

    컴포넌트용도
    TDateTimePicker날짜/시간 선택
    TMonthCalendar달력 표시
    TCalendar달력
    TTimer일정 시간마다 이벤트 발생

    TTimer는 화면에 직접 표시되지 않는 대표적인 비시각적 컴포넌트입니다.

    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
        Label1->Caption = TimeToStr(Now());
    }
    

    4. 메뉴/툴바 관련

    컴포넌트용도
    TMainMenu프로그램의 상단 메뉴
    TPopupMenu마우스 우클릭 메뉴
    TToolBar툴바
    TStatusBar프로그램 하단 상태 표시줄
    TActionList메뉴/버튼 등의 동작을 중앙 관리
    TImageList메뉴/툴바 등에 사용할 이미지 관리

    예:

    파일
     ├─ 새로 만들기
     ├─ 열기
     ├─ 저장
     └─ 종료
    

    이런 메뉴를 만드는 데 TMainMenu를 사용합니다.

    5. 데이터베이스 관련

    C++Builder에서 업무 프로그램을 만들 때 특히 많이 사용하는 영역입니다.

    컴포넌트용도
    TDataSource데이터셋과 화면 컴포넌트 연결
    TFDConnectionDB 연결
    TFDQuerySQL 실행
    TFDTable테이블 접근
    TFDStoredProcStored Procedure 실행
    TFDTransaction트랜잭션 관리
    TDBEditDB 필드와 연결된 Edit
    TDBGridDB 데이터를 표 형태로 표시
    TDBNavigator레코드 이동/추가/삭제

    일반적인 구조는 다음과 같습니다.

    DB
     ↓
    TFDConnection
     ↓
    TFDQuery
     ↓
    TDataSource
     ↓
    TDBGrid
    

    예를 들어:

    FDQuery1->SQL->Text =
        "SELECT * FROM CUSTOMER";
    
    FDQuery1->Open();
    

    그러면 TDataSource와 TDBGrid를 연결해 놓은 경우 조회 결과가 그리드에 표시됩니다.

    6. 파일/폴더 관련

    컴포넌트용도
    TOpenDialog파일 열기
    TSaveDialog파일 저장
    TFontDialog글꼴 선택
    TColorDialog색상 선택
    TPrintDialog인쇄 설정
    TPrinterSetupDialog프린터 설정
    TDirectoryListBox디렉터리 목록
    TFileListBox파일 목록

    예:

    if (OpenDialog1->Execute())
    {
        Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
    }
    

    7. 컨테이너 컴포넌트

    다른 컴포넌트를 안에 배치하는 데 사용합니다.

    컴포넌트특징
    TPanel가장 기본적인 영역 분할
    TGroupBox관련 항목 그룹화
    TPageControl탭 화면
    TTabControl탭 선택 기능
    TScrollBox스크롤 영역
    TSplitter영역 크기를 마우스로 조절
    TFrame화면을 재사용 가능한 단위로 구성

    특히 **TFrame**은 규모가 있는 프로그램에서 매우 유용합니다.

    MainForm
     ├─ Frame_Login
     ├─ Frame_Customer
     ├─ Frame_Order
     └─ Frame_Report
    

    처럼 화면을 모듈화할 수 있습니다.

    8. 그래픽 관련

    컴포넌트용도
    TImage이미지 표시
    TPaintBox직접 그림 그리기
    TShape기본 도형
    TImageList이미지 목록 관리
    TChart그래프/차트

    직접 그리기가 필요한 경우 TPaintBox의 OnPaint 이벤트 등을 사용합니다.

    void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
    {
        PaintBox1->Canvas->MoveTo(10, 10);
        PaintBox1->Canvas->LineTo(200, 100);
    }
    

    9. 통신/네트워크 관련

    C++Builder에는 네트워크 프로그램을 만들기 위한 컴포넌트들도 있습니다.

    대표적으로:

    • TIdTCPClient

    • TIdTCPServer

    • TIdUDPClient

    • TIdUDPServer

    • TIdHTTP

    • TIdFTP

    • TIdSMTP

    여기서 TId... 계열은 Indy(Internet Direct) 컴포넌트입니다.

    예를 들어 TIdHTTP는 HTTP 통신에 사용할 수 있습니다.

    10. 비시각적 컴포넌트

    폼에 배치했을 때 실행 화면에는 나타나지 않는 컴포넌트입니다.

    대표적으로:

    • TTimer

    • TDataSource

    • TFDConnection

    • TFDQuery

    • TActionList

    • TImageList

    • TOpenDialog

    • TSaveDialog

    • TIdHTTP

    IDE에서는 폼 아래쪽의 Non-Visual Components 영역에 표시되는 경우가 많습니다.


    처음 공부한다면 이 순서가 좋습니다

    TForm
      ↓
    TLabel / TEdit / TButton
      ↓
    TPanel / TGroupBox
      ↓
    TComboBox / TListBox
      ↓
    TStringGrid
      ↓
    TTimer
      ↓
    TMainMenu / TStatusBar
      ↓
    TPageControl / TFrame
      ↓
    TDataSource / TFDQuery / TDBGrid
      ↓
    이벤트 처리
      ↓
    Windows API / DLL / 통신 / DB
    

    특히 C++Builder는 컴포넌트 자체를 외우는 것보다 Component → Property → Event → Method 구조를 이해하는 것이 중요합니다.

    예를 들어 TButton 하나만 보더라도:

    TButton
     ├─ Property : Caption
     ├─ Property : Enabled
     ├─ Property : Visible
     ├─ Property : Color
     └─ Event    : OnClick
    

    처럼 **속성(Property)**으로 상태를 설정하고, **이벤트(Event)**에서 동작을 구현하며, **메서드(Method)**를 호출해서 기능을 수행한다고 이해하면 다른 컴포넌트도 훨씬 쉽게 배울 수 있습니다.

ChatGPT는 AI라 실수할 수 있습니다.

현재 채팅을 지울까요?

새 채팅을 시작하면 현재 대화가 삭제됩니다. 채팅을 저장하려면 하거나 하세요.

로그인 또는 회원가입

더 스마트한 응답, 파일 및 이미지 업로드 등을 이용할 수 있습니다.

대화형 콘텐츠